var app = require('express')()
var http = require('http').Server(app)
var io = require('socket.io')(http)
var path = 3000
var AImsg = require('./aiServer')
// 在线用户
var onlineUsers = {}
// 当前在线人数
var onlineCount = 0
// var aiMsg = {}
app.get('/', function (req, res) {
  res.sendFile(__dirname + '/index.html')
})
// 已连接服务
io.on('connection', function (socket) {

  // 监听登录，创建用户到(onlineUsers)，并计算(onlineCount)人数
  socket.on('login', function (obj) {
    // 将新用户唯一标识当做socket名称，后面退出时会用到
    socket.name = obj.Uid
    // 检查在线用户，如果uid不存在，及时加入
    if (!onlineUsers.hasOwnProperty(obj.Uid)) {
      onlineUsers[obj.Uid] = obj
      onlineCount++
    }
    console.log(onlineUsers)
    // 广播给所有用户
    io.emit('login', {
      user: obj,
      onlineUsers: onlineUsers,
      onlineCount: onlineCount,
      login: true
    })
  })

  // 监听退出
  socket.on('disconnect', function () {
    if (onlineUsers.hasOwnProperty(socket.name)) {
      // 退出用户的信息
      var obj = {
        uid: socket.name,
        UserName: onlineUsers[socket.name]
      }
      // 删除用户
      delete onlineUsers[socket.name]
      // 在线人数 -1
      onlineCount --
      console.log("----------------------")
      console.log(onlineUsers)
      // 广播有人退出去了
      io.emit('logout', {
        user: obj,
        onlineUsers: onlineUsers,
        onlineCount: onlineCount,
        login: true
      })
    }
  })

  // 监听用户发布聊天内容
  socket.on('message', function (obj) {
    io.emit('message', obj)
    console.log(obj.username + "说：" + obj.msg)
  })
  // 监听用户发布给机器人的聊天内容
  socket.on('aimessage', function (obj) {
    obj.aimsg = AImsg(obj.aimsg)
    io.emit('aimessage', obj)
    console.log(obj.username + "说：" + obj.msg)
    console.log("机器人说：" + obj.aimsg)
  })

  // 用户信息更改
  socket.on('changeInfo', function (obj) {
    io.emit('message', obj)
    console.log(obj.username + '说：' + obj.msg)
  })
})

http.listen(path, function () {
  console.log('正在监听端口：' + path)
})
